functional programming [kotlin fp] 펑터(Functor) 펑터(Functor)는 매핑할 수 있는 것 (can be mapped over)이라는 행위를 선언한 타입 클래스를 말한다. 여기서 Iterable과 List는 각각 T와 R 타입을 담을 수 있는 박스라고 생각해볼 수 있다. 펑터는 리스트 같은 컨테이너형 타입의 값을 꺼내서 입력받은 함수를 적용후 함수의 결과값을 컨테이터형 타입에 넣어서 반환하는 행위를 선언한 타입 클래스를 의미한다. 어떤 함... functional programmingkotlinfunctional programming [kotlin fp] 함수형 타입 시스템 대수적 타입이란 다른 타입들을 모아서 형성되는 합성 타입을 의미하며 곱 타입(product type)과 합 타입(sum type)이 존재한다. 대수적 데이터 타입(algebraic data type)의 핵심은 기존의 타입들을 결합하여 새로운 타입을 정의하는 것이다. 곱타입이란 하나의 자료구조에 여러 가지 타입을 한번에 정의하는 것을 의미하며 튜플이나 레코드를 예시로 들 수 있다. 합 타입은 ... functional programmingkotlinfunctional programming [kotlin fp] 컬렉션으로 데이터 다루기 - 2 sum 함수는 왼쪽에서 오른쪽으로 줄이기 때문에 fold left 하다고 한다. 재귀 과정에서 this가 FunList.Nil에 매칭되면 원본 리스트의 모든 값을 순회했다는 것이므로 현재까지 작업된 acc을 반환하고, is FunList.Cons에 매칭되면 tail의 foldLeft 함수에 리스트의 가장 왼쪽에 있는 값 (head)를 빼서 f 함수의 매개변수로 사용한다. 위의 sum 함수는 ... functional programmingkotlinfunctional programming 반드시 "함수형 프로그래밍"을 알아야 할까? 함수형 프로그래밍은 코드 작성 스타일이라고 할 수 있다. 아예 함수형 코드로 만들어진 언어들도 있다. 그렇다 하더라도 이 개념을 알아놓으면 (배워놓으면) 무슨 언어로 코드를 작성하든 도움이 될 것이다. 함수형 프로그래밍을 배우면, 프로그래밍 문제를 해결할 때 유용한 새로운 관점과 접근 방식을 얻을 수 있다. 함수형 프로그래밍에 따라 코드를 작성할 경우 깨끗한 코드를 작성할 수 있고, 버그가 ... functional programmingfunctional programming [CS/Functional programming] 함수형 프로그래밍 side effect를 배제한다 => 순수 함수를 만든다. 함수형 프로그래밍에서는 중복을 제거하거나 어떤 대상을 추상화할 때 함수를 사용하면 된다. 함수형 프로그래밍은 값을 만들어놓는게 아니라 함수를 통과하면서 값을 만들어 낸다. 변수나 자료 구조(객체, 배열 등)에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 반환값으로 사용할 수 있다. input이 같으면 항상 동일한 output... functional programmingCSCS 함수형 프로그래밍의 순수 함수 부수 효과를 없애고 순수 함수를 만들어 모듈화 수준을 높이는 프로그래밍 패러다임 순수 함수 외부의 상태를 변경하거나 영향을 받지 않는 함수 또한 이 함수는 외부의 값에 영향을 주거나 받지 않는다. 위 함수는 외부 값인인 c에 영향을 받기 때문에 순수함수가 아니다. 위 함수도 함수가 실행되면 외부값인 c를 변경시키기 때문에 순수 함수가 아니며, 이를 부수 효과라 한다. 위 함수도 외부 obj ... JavaScriptfunctional programmingpure functionJavaScript
[kotlin fp] 펑터(Functor) 펑터(Functor)는 매핑할 수 있는 것 (can be mapped over)이라는 행위를 선언한 타입 클래스를 말한다. 여기서 Iterable과 List는 각각 T와 R 타입을 담을 수 있는 박스라고 생각해볼 수 있다. 펑터는 리스트 같은 컨테이너형 타입의 값을 꺼내서 입력받은 함수를 적용후 함수의 결과값을 컨테이터형 타입에 넣어서 반환하는 행위를 선언한 타입 클래스를 의미한다. 어떤 함... functional programmingkotlinfunctional programming [kotlin fp] 함수형 타입 시스템 대수적 타입이란 다른 타입들을 모아서 형성되는 합성 타입을 의미하며 곱 타입(product type)과 합 타입(sum type)이 존재한다. 대수적 데이터 타입(algebraic data type)의 핵심은 기존의 타입들을 결합하여 새로운 타입을 정의하는 것이다. 곱타입이란 하나의 자료구조에 여러 가지 타입을 한번에 정의하는 것을 의미하며 튜플이나 레코드를 예시로 들 수 있다. 합 타입은 ... functional programmingkotlinfunctional programming [kotlin fp] 컬렉션으로 데이터 다루기 - 2 sum 함수는 왼쪽에서 오른쪽으로 줄이기 때문에 fold left 하다고 한다. 재귀 과정에서 this가 FunList.Nil에 매칭되면 원본 리스트의 모든 값을 순회했다는 것이므로 현재까지 작업된 acc을 반환하고, is FunList.Cons에 매칭되면 tail의 foldLeft 함수에 리스트의 가장 왼쪽에 있는 값 (head)를 빼서 f 함수의 매개변수로 사용한다. 위의 sum 함수는 ... functional programmingkotlinfunctional programming 반드시 "함수형 프로그래밍"을 알아야 할까? 함수형 프로그래밍은 코드 작성 스타일이라고 할 수 있다. 아예 함수형 코드로 만들어진 언어들도 있다. 그렇다 하더라도 이 개념을 알아놓으면 (배워놓으면) 무슨 언어로 코드를 작성하든 도움이 될 것이다. 함수형 프로그래밍을 배우면, 프로그래밍 문제를 해결할 때 유용한 새로운 관점과 접근 방식을 얻을 수 있다. 함수형 프로그래밍에 따라 코드를 작성할 경우 깨끗한 코드를 작성할 수 있고, 버그가 ... functional programmingfunctional programming [CS/Functional programming] 함수형 프로그래밍 side effect를 배제한다 => 순수 함수를 만든다. 함수형 프로그래밍에서는 중복을 제거하거나 어떤 대상을 추상화할 때 함수를 사용하면 된다. 함수형 프로그래밍은 값을 만들어놓는게 아니라 함수를 통과하면서 값을 만들어 낸다. 변수나 자료 구조(객체, 배열 등)에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 반환값으로 사용할 수 있다. input이 같으면 항상 동일한 output... functional programmingCSCS 함수형 프로그래밍의 순수 함수 부수 효과를 없애고 순수 함수를 만들어 모듈화 수준을 높이는 프로그래밍 패러다임 순수 함수 외부의 상태를 변경하거나 영향을 받지 않는 함수 또한 이 함수는 외부의 값에 영향을 주거나 받지 않는다. 위 함수는 외부 값인인 c에 영향을 받기 때문에 순수함수가 아니다. 위 함수도 함수가 실행되면 외부값인 c를 변경시키기 때문에 순수 함수가 아니며, 이를 부수 효과라 한다. 위 함수도 외부 obj ... JavaScriptfunctional programmingpure functionJavaScript